本篇记录网络层的配置过程。iKuai 承担二级路由和 DHCP 职责,OpenWrt 作为旁路由负责分流和 AdGuard 广告过滤,iKuai 的 DNS 和默认网关都指向 OpenWrt,实现全局网络过滤。之所以配一个 iKuai主要还是为了固定内网,同时 iKuai 的后台可以很方便的给设备修改网关和DNS服务器,结合2.5G网卡,内网也能轻松跑满机械硬盘的速度了。
网络架构回顾
1 | 互联网 |
分工:
- iKuai:软路由兼 DHCP 服务器,管理整个 11 网段,将 DNS 和默认网关下发为 OpenWrt 地址
- OpenWrt:旁路由,AdGuard Home 处理 DNS 过滤,passwall / homeproxy 处理科学上网分流
- WiFi6 路由器:AP 模式,关闭 DHCP,提供无线接入,家用设备连它即可访问所有内网服务
- 不需要走 OpenWrt 的设备,手动改回网关为 iKuai
192.168.11.1即可
一、VM1:iKuai 软路由
创建虚拟机
| 项目 | 配置 |
|---|---|
| CPU | 2 核,类型 host |
| 内存 | 2 GB |
| 系统盘 | 8 GB,总线 SATA |
| 网卡1(WAN) | 桥接 vmbr1(i226-v 口1,接上层路由器) |
| 网卡2(LAN) | 桥接 vmbr2(i226-v 口2,2.5G 内网) |
| 网卡3(LAN) | 桥接 vmbr0(管理端口,接上层路由器) |
安装
- 从 爱快官网 下载 64 位 ISO,上传到 PVE 的 ISO 镜像库
- 挂载 ISO 启动,按提示完成写盘
- 启动后控制台输入
set addr 192.168.11.1/24 eth1设置 LAN IP(eth1 对应 vmbr2,即第二块网卡) - 浏览器访问
http://192.168.11.1,默认账号密码均为admin
基础网络配置
线路管理 → WAN(eth0,vmbr1,i226-v 口1):
- 连接方式:DHCP(由上层路由器分配)
- 开启「开机自动连接」
LAN 口配置:
- IP 设为
192.168.11.1/24(eth1,vmbr2)
WiFi6 路由器的 LAN 口用网线连接 i226-v 口2(vmbr2 的物理网口),在 WiFi6 路由器管理界面将其切换为 AP 模式(关闭 DHCP)。切换后路由器本身也会从 iKuai 获取一个 IP(建议在 iKuai DHCP 静态绑定中固定为
192.168.11.2),家里所有设备连接 WiFi6 路由器后即可正常访问内网。
DHCP 配置(关键:下发 OpenWrt 作为 DNS 和网关)
iKuai 的 DHCP 配置决定了所有内网设备的 DNS 和默认网关。要让 OpenWrt 承接 DNS 过滤和分流,需要将这两项都指向 OpenWrt:
DHCP 服务 → 自动获取 IP 配置:
| 参数 | 值 | 说明 |
|---|---|---|
| 地址池 | 192.168.11.100 ~ 192.168.11.200 |
动态分配范围 |
| 默认网关 | 192.168.11.13 |
指向 OpenWrt,流量先经过旁路由 |
| DNS 服务器 | 192.168.11.13 |
指向 OpenWrt AdGuard,过滤广告 |
将默认网关下发为 OpenWrt(192.168.11.13),内网设备的所有流量都会先经过 OpenWrt,passwall 等插件才能生效。如果只需要 DNS 过滤而不需要透明代理,只改 DNS 即可,网关保持
192.168.11.1。
固定 IP 绑定:对群晖、飞牛等固定设备,在「DHCP 静态绑定」中通过 MAC 地址绑定固定 IP,避免地址漂移。
二、VM2:OpenWrt 旁路由
创建虚拟机
| 项目 | 配置 |
|---|---|
| CPU | 2 核,类型 host |
| 内存 | 2 GB |
| 系统盘 | 8 GB,总线 SATA |
| 网卡1 | 桥接 vmbr0,VirtIO(备用管理 124.13) |
| 网卡2 | 桥接 vmbr2,VirtIO(日常内网 11.13) |
安装
从 ImmortalWrt 下载 x86_64 的 ext4 镜像,导入 PVE:
1 | gunzip openwrt-*.img.gz |
挂载磁盘为 scsi0,设为第一启动项,启动后通过控制台修改 LAN IP:
1 | uci set network.lan.ipaddr='192.168.11.13' |
浏览器访问 http://192.168.11.13 进入 LuCI 管理界面。
旁路由基础配置
作为旁路由,OpenWrt 不负责 DHCP,只需要:
网络 → 接口 → LAN:
- IP 地址:
192.168.11.13 - 子网掩码:
255.255.255.0 - 网关:
192.168.11.1(上游网关填 iKuai) - DNS:
223.5.5.5(上游 DNS,AdGuard 会在本地拦截后再请求这里) - 关闭 DHCP(LAN 接口的 DHCP 服务器选「忽略此接口」)
安装 AdGuard Home
AdGuard Home 是开源 DNS 过滤工具,支持广告屏蔽、恶意域名拦截,效果比浏览器插件覆盖更广(全设备生效)。
方式一:opkg 安装(推荐)
1 | opkg update |
方式二:手动安装
从 AdGuard Home Releases 下载 linux_amd64 的二进制包,解压后放到 /usr/bin/AdGuardHome,参考官方文档配置 systemd 服务。
AdGuard Home 初始配置
首次启动后访问 http://192.168.11.13:3000 完成向导:
- 管理界面端口:保持 3000
- DNS 监听地址:选
0.0.0.0:53(监听所有接口的 53 端口) - 上游 DNS:填可靠的国内 DNS,如
223.5.5.5、119.29.29.29 - Bootstrap DNS:
223.5.5.5
初始化完成后 AdGuard 接管 53 端口,后续管理界面通过
http://192.168.11.13:3000访问。
配置过滤规则
进入 AdGuard Home 管理界面 → 过滤器 → DNS 封锁清单 → 添加封锁清单:
推荐订阅的规则列表:
| 规则名称 | 地址 |
|---|---|
| AdGuard DNS filter | https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt |
| EasyList China | https://easylist-downloads.adblockplus.org/easylistchina.txt |
| anti-AD | https://anti-ad.net/easylist.txt |
添加后点击更新过滤器,规则立即生效。
查询日志(过滤器 → 查询日志)可以实时看到所有 DNS 请求,哪些被拦截、哪些放行一目了然,方便排查误拦截的域名加入白名单。
安装分流插件(passwall)
1 | opkg update |
在 LuCI → 服务 → PassWall 中配置节点和分流规则,国内流量直连、境外流量走代理。
与 iKuai 的协作验证
配置完成后,在内网任意设备上验证:
1 | # 查看 DNS 服务器是否为 AdGuard(应返回 192.168.11.13) |
在 AdGuard Home 的查询日志中能看到来自各设备的 DNS 请求,说明流量正确经过了 OpenWrt。
踩坑记录
1、iKuai 断电后不自动拨号
线路管理 → 连接设置 → 开启「开机自动连接」,这个选项默认是关的。
2、AdGuard 误拦截导致某些 App 无法联网
在 AdGuard Home 的查询日志中找到被拦截的域名,点击「取消封锁」或加入自定义白名单(过滤器 → 自定义过滤规则)。
3、旁路由网关设置后某些设备无法上网
OpenWrt 的 LAN 接口要确认网关填的是 iKuai(192.168.11.1)而不是自身,否则流量会成环。同时确认 OpenWrt 开启了 IP 转发:echo 1 > /proc/sys/net/ipv4/ip_forward。
4、OpenWrt 重启后 AdGuard 没有自启
确认执行了 service adguardhome enable,或在 LuCI → 系统 → 启动项 中手动勾选 adguardhome。
未完待续。